/*
* $Id: KeyProcess.h 20 2010-01-19 15:40:42Z volok-aleksej@yandex.ru $
*
* Copyright 2009 by Volokitin Alexey
* All rights reserved
*
*/
#ifndef _KEY_PROCESS_H_
#define _KEY_PROCESS_H_

class CEditDraw;
class CComboBoxDraw;
class CCheckBoxDraw;
class CDateDraw;

class CKeyProcess
{
protected:
	CEditDraw *m_pEditDraw;
	CComboBoxDraw *m_pComboBoxDraw;
	CCheckBoxDraw* m_pCheckBoxDraw;
	CDateDraw* m_pDateDraw;
public:
	CKeyProcess(CEditDraw* pEditDraw);
	CKeyProcess(CComboBoxDraw* pComboBoxDraw);
	CKeyProcess(CCheckBoxDraw* pCheckBoxDraw);
	CKeyProcess(CDateDraw* pDateDraw);
	virtual ~CKeyProcess();
public:
	virtual bool IsProcess(unsigned int nChar, byte stateSysKey);
	virtual bool Process();
};

class CArrawLeft : public CKeyProcess
{
public:
	CArrawLeft(CEditDraw* pEditDraw);
	CArrawLeft(CDateDraw* pDateDraw);
public:
	virtual bool IsProcess(unsigned int nChar, byte stateSysKey);
	virtual bool Process();
};

class CArrawRight : public CKeyProcess
{
public:
	CArrawRight(CEditDraw* pEditDraw);
	CArrawRight(CDateDraw* pDateDraw);
public:
	virtual bool IsProcess(unsigned int nChar, byte stateSysKey);
	virtual bool Process();
};

class CArrawUp : public CKeyProcess
{
public:
	CArrawUp(CEditDraw* pEditDraw);
	CArrawUp(CComboBoxDraw* pComboBoxDraw);
	CArrawUp(CDateDraw* pDateDraw);
public:
	virtual bool IsProcess(unsigned int nChar, byte stateSysKey);
	virtual bool Process();
};

class CArrawDown : public CKeyProcess
{
public:
	CArrawDown(CEditDraw* pEditDraw);
	CArrawDown(CComboBoxDraw* pComboBoxDraw);
	CArrawDown(CDateDraw* pDateDraw);
public:
	virtual bool IsProcess(unsigned int nChar, byte stateSysKey);
	virtual bool Process();
};

class CShiftArrawLeft : public CKeyProcess
{
public:
	CShiftArrawLeft(CEditDraw* pEditDraw);
public:
	virtual bool IsProcess(unsigned int nChar, byte stateSysKey);
	virtual bool Process();
};

class CShiftArrawRight : public CKeyProcess
{
public:
	CShiftArrawRight(CEditDraw* pEditDraw);
public:
	virtual bool IsProcess(unsigned int nChar, byte stateSysKey);
	virtual bool Process();
};

class CShiftArrawUp : public CKeyProcess
{
public:
	CShiftArrawUp(CEditDraw* pEditDraw);
public:
	virtual bool IsProcess(unsigned int nChar, byte stateSysKey);
	virtual bool Process();
};

class CShiftArrawDown : public CKeyProcess
{
public:
	CShiftArrawDown(CEditDraw* pEditDraw);
public:
	virtual bool IsProcess(unsigned int nChar, byte stateSysKey);
	virtual bool Process();
};

class CBackSpace : public CKeyProcess
{
public:
	CBackSpace(CEditDraw* pEditDraw);
public:
	virtual bool IsProcess(unsigned int nChar, byte stateSysKey);
	virtual bool Process();
};

class CDelete : public CKeyProcess
{
public:
	CDelete(CEditDraw* pEditDraw);
public:
	virtual bool IsProcess(unsigned int nChar, byte stateSysKey);
	virtual bool Process();
};
class CEnter : public CKeyProcess
{
public:
	CEnter(CEditDraw* pEditDraw);
public:
	virtual bool IsProcess(unsigned int nChar, byte stateSysKey);
	virtual bool Process();
};

class CSpace : public CKeyProcess
{
public:
	CSpace(CCheckBoxDraw* pCheckBoxDraw);
public:
	virtual bool IsProcess(unsigned int nChar, byte stateSysKey);
	virtual bool Process();
};

class CCopy : public CKeyProcess
{
public:
	CCopy(CEditDraw* pEditDraw);
public:
	virtual bool IsProcess(unsigned int nChar, byte stateSysKey);
	virtual bool Process();
};

class CCharKey : public CKeyProcess
{
	int m_nChar;
public:
	CCharKey(CEditDraw* pEditDraw);
public:
	virtual bool IsProcess(unsigned int nChar, byte stateSysKey);
	virtual bool Process();
};

#endif/*_KEY_PROCESS_H_*/